package com.atguigu.gmall.cart.service;

import com.atguigu.gmall.cart.mapper.CartInfoMapper;
import com.atguigu.gmall.model.cart.CartInfo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * @Author: 李旭
 * @Time: 14:22
 * @Description: 购物车中 创建新线程的实现类
 */
@Service
public class CartInfoAsyncServiceImpl implements CartInfoAsyncService {
    @Autowired
    private CartInfoMapper cartInfoMapper;

    //Mysql更新购物车   打异步注解的方式   异步保存  异步调用
    @Override
    @Async  //不生效
    public void updateByIdAsync(CartInfo cartInfo) {

        System.out.println("Async:" + Thread.currentThread().getName());
        //cartInfoMapper.updateById(cartInfo);
        cartInfoMapper.update(cartInfo,new QueryWrapper<CartInfo>()
           .eq("user_id",cartInfo.getUserId())
           .eq("sku_id",cartInfo.getSkuId()));

    }
    //Mysql保存购物车   打异步注解的方式   异步保存  异步调用
    @Override
    @Async
    public void insertAsync(CartInfo cartInfo) {
        System.out.println("Async:" + Thread.currentThread().getName());
        cartInfoMapper.insert(cartInfo);
    }

    @Override
    @Async
    public void updateByIdAsyncExt(String userTempId, String userId) {
        System.out.println("Async:updateByIdAsyncExt:" + Thread.currentThread().getName());
        CartInfo cartInfo = new CartInfo();
        cartInfo.setUserId(userId);
        cartInfoMapper.update(cartInfo,new QueryWrapper<CartInfo>()
          .eq("user_id",userTempId));
    }

    //删除
    @Override
    @Async
    public void deleteByUserTempId(String userTempId) {
        System.out.println("Async:deleteByUserTempId:" + Thread.currentThread().getName());
        cartInfoMapper.delete(new QueryWrapper<CartInfo>()
          .eq("user_id",userTempId));
    }
}
